"""
1.强制等待  sleep(n)    秒
    不确定等待时常，时间短元素没有加载出来，时间长影响执行效率
2.隐式等待  implicitly_wait(n)  全局等待
    若元素找到了，立即往下执行，如果没有找到，在等待的时间内不停搜索，直到超时
    适用于整个测试过程中的每个步骤
3.显式等待  webDriverWait(5,0.5)    等待某条件出现(元素可点击，元素可见，标题变为XX)等
    适用于单个元素
    语法较复杂
"""
from time import sleep
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.ie.webdriver import WebDriver
from selenium.webdriver.support import expected_conditions
from selenium.webdriver.support.wait import WebDriverWait

driver = webdriver.Chrome()
#隐式等待
driver.implicitly_wait(5)   #等待5秒内加载出百度网页
driver.get("http://baidu.com")
#
a = driver.find_element(By.ID,"kw")
print(a.get_dom_attribute("name"))
#显式等待
######################################################################################################
locator = (By.ID,"kw")
dengdai = expected_conditions.presence_of_element_located(locator)  #导入显示等待的包   等待条件
#expected_conditions.element_to_be_clickable()  当……可点击的时候
b = WebDriverWait(driver,5,0.5).until(dengdai)  #超时时间5秒，每0.5秒轮询一次条件是否成立
print(b.get_dom_attribute("name"))
##########################################################
c = WebDriverWait(driver,5,0.5).until(expected_conditions.presence_of_element_located((By.ID, 'kw')))
print(c.get_dom_attribute("name"))